/*
 * CDeltaTimeModule.h
 *
 *  Created on: 07.10.2012
 *      Author: caffeine
 */

#ifndef CDELTATIMEMODULE_H_
#define CDELTATIMEMODULE_H_

namespace irr{
namespace scene{

class CDeltaTimeModule{
private:
	irr::f64 deltaTime;
	clock_t currentTime, lastTime;
public:
	CDeltaTimeModule():deltaTime(0),currentTime(0),lastTime(0){}
	f64 & getDeltaTime() { return deltaTime; }
    clock_t & getCurrentTime() { return currentTime; }

    void updateDeltatime(irr::u32 _currentTime_){
        currentTime=_currentTime_;
        deltaTime=(currentTime-lastTime)*0.001f;
        lastTime=currentTime;
    }

    void updateDeltatime(){
    	updateDeltatime(clock());
    }

    /***
     * Это надо вызывать после отключения паузы.
     * Чтобы после паузы разница не оказалась запредельной большой,
     * что может привести к тому, что объект резко прыгнет/дёрнется/улетит
     * */
    void pauseFaze(){
        deltaTime = 0; currentTime = 0; lastTime = 0;
    }

};

}//namespace scene
}//namespace irr
#endif /* CDELTATIMEMODULE_H_ */
